﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

using Libreria.DAL;

namespace Libreria.RFID.Modelo
{
    [CAD(true, CAD.TiposBD._SQLServer, "Aprendiz")]
    public class AprendizDeTitulado
    {
        // Atributo de abstracción
        private MOR accesoADatos;

        private Int32? codigoPersona;
        private Int32? codigoTitulado;



        // Constructor de la clase
        public AprendizDeTitulado()
        {
        }

        public AprendizDeTitulado(string cadenaDeConexion)
        {
            this.accesoADatos = MOR.Instance(cadenaDeConexion);
        }

        
        //Encapsulamiento y mapeo de atributos
        [Tipo(Tipo.TiposSQLServer._int, "codigoPersona",true,false)]
        public Int32? CodigoPersona
        {
            get { return codigoPersona; }
            set { codigoPersona = value; }
        }

        [Tipo(Tipo.TiposSQLServer._int, "codigoTitulado",true,false)]
        public Int32? CodigoTitulado
        {
            get { return codigoTitulado; }
            set { codigoTitulado = value; }
        }

        // Métodos de abstracción de datos
        public void crear()
        {
            this.accesoADatos.crearRegistro(this);
        }
        public List<AprendizDeTitulado> consultar()
        {
            List<Object> registros = this.accesoADatos.consultarRegistros(this, false);
            List<AprendizDeTitulado> resultado = new List<AprendizDeTitulado>();
            foreach (Object registro in registros)
            {
                resultado.Add((AprendizDeTitulado)registro);
            }
            return resultado;
        }

        public List<AprendizDeTitulado> consultarPorPersona(Int32 persona)
        {
            this.codigoPersona = persona;
            List<Object> registros = this.accesoADatos.consultarRegistros(this, false);
            List<AprendizDeTitulado> resultado = new List<AprendizDeTitulado>();
            foreach (Object registro in registros)
            {
                resultado.Add((AprendizDeTitulado)registro);
            }
            return resultado;
        }

        public List<AprendizDeTitulado> consultarPorTitulado(Int32 titulado)
        {
            this.codigoTitulado = titulado;
            List<Object> registros = this.accesoADatos.consultarRegistros(this, false);
            List<AprendizDeTitulado> resultado = new List<AprendizDeTitulado>();
            foreach (Object registro in registros)
            {
                resultado.Add((AprendizDeTitulado)registro);
            }
            return resultado;
        }

        public void actualizar()
        {
            this.accesoADatos.actualizarRegistro(this);
        }

        public void eliminar()
        {
            this.accesoADatos.borrarRegistro(this);
        }
    }
}